From cc11b09f27f5356129a4e9dbe3d5da5de8de4e3c Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Thu, 17 Jan 2008 12:05:43 -0700 Subject: [PATCH] [IA64] domheap: Don't refer domain->arch.rid_bits from optfaults.S Copy it to struct arch_vcpu. Signed-off-by: Isaku Yamahata --- xen/arch/ia64/asm-offsets.c | 2 +- xen/arch/ia64/vmx/optvfault.S | 4 +--- xen/arch/ia64/xen/domain.c | 1 + xen/include/asm-ia64/domain.h | 1 + 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/xen/arch/ia64/asm-offsets.c b/xen/arch/ia64/asm-offsets.c index ba51834fb2..1c7acdbd14 100644 --- a/xen/arch/ia64/asm-offsets.c +++ b/xen/arch/ia64/asm-offsets.c @@ -70,6 +70,7 @@ void foo(void) DEFINE(IA64_VCPU_INSVC3_OFFSET, offsetof (struct vcpu, arch.insvc[3])); DEFINE(IA64_VCPU_STARTING_RID_OFFSET, offsetof (struct vcpu, arch.starting_rid)); DEFINE(IA64_VCPU_ENDING_RID_OFFSET, offsetof (struct vcpu, arch.ending_rid)); + DEFINE(IA64_VCPU_RID_BITS_OFFSET, offsetof (struct vcpu, arch.rid_bits)); DEFINE(IA64_VCPU_DOMAIN_ITM_OFFSET, offsetof (struct vcpu, arch.domain_itm)); DEFINE(IA64_VCPU_DOMAIN_ITM_LAST_OFFSET, offsetof (struct vcpu, arch.domain_itm_last)); DEFINE(IA64_VCPU_ITLB_OFFSET, offsetof (struct vcpu, arch.itlb)); @@ -79,7 +80,6 @@ void foo(void) BLANK(); DEFINE(IA64_DOMAIN_SHADOW_BITMAP_OFFSET, offsetof (struct domain, arch.shadow_bitmap)); - DEFINE(IA64_DOMAIN_RID_BITS_OFFSET, offsetof (struct domain, arch.rid_bits)); BLANK(); diff --git a/xen/arch/ia64/vmx/optvfault.S b/xen/arch/ia64/vmx/optvfault.S index 1e02ea4076..69a5592922 100644 --- a/xen/arch/ia64/vmx/optvfault.S +++ b/xen/arch/ia64/vmx/optvfault.S @@ -95,11 +95,10 @@ GLOBAL_ENTRY(vmx_asm_mov_to_rr) #ifndef ACCE_MOV_TO_RR br.many vmx_virtualization_fault_back #endif - add r22=IA64_VCPU_DOMAIN_OFFSET,r21 + add r22=IA64_VCPU_RID_BITS_OFFSET,r21 extr.u r16=r25,20,7 // r3 extr.u r17=r25,13,7 // r2 ;; - ld8 r22=[r22] // Get domain movl r20=asm_mov_from_reg ;; adds r30=vmx_asm_mov_to_rr_back_1-asm_mov_from_reg,r20 @@ -126,7 +125,6 @@ vmx_asm_mov_to_rr_back_1: vmx_asm_mov_to_rr_back_2: adds r30=vmx_resume_to_guest-asm_mov_from_reg,r20 shladd r27=r23,3,r27 // address of VRR - add r22=IA64_DOMAIN_RID_BITS_OFFSET,r22 ;; ld1 r22=[r22] // Load rid_bits from domain mov b0=r18 // restore b0 diff --git a/xen/arch/ia64/xen/domain.c b/xen/arch/ia64/xen/domain.c index c9cc316fd2..0ca477f1eb 100644 --- a/xen/arch/ia64/xen/domain.c +++ b/xen/arch/ia64/xen/domain.c @@ -466,6 +466,7 @@ int vcpu_initialise(struct vcpu *v) v->arch.starting_rid = d->arch.starting_rid; v->arch.ending_rid = d->arch.ending_rid; + v->arch.rid_bits = d->arch.rid_bits; v->arch.breakimm = d->arch.breakimm; v->arch.last_processor = INVALID_PROCESSOR; v->arch.vhpt_pg_shift = PAGE_SHIFT; diff --git a/xen/include/asm-ia64/domain.h b/xen/include/asm-ia64/domain.h index a5d8323ef4..a77bb31856 100644 --- a/xen/include/asm-ia64/domain.h +++ b/xen/include/asm-ia64/domain.h @@ -262,6 +262,7 @@ struct arch_vcpu { int breakimm; // from arch_domain (so is pinned) int starting_rid; /* first RID assigned to domain */ int ending_rid; /* one beyond highest RID assigned to domain */ + unsigned char rid_bits; // from arch_domain (so is pinned) /* Bitset for debug register use. */ unsigned int dbg_used; -- 2.30.2